﻿/*=============================================================================
* File Name : Collision.cpp                          Ver : 1.00  Date : 2009-12-22
*
* Description :
*
*       衝突判定計算クラス.
*
* Author : yuuki tsuchida.
*============================================================================*/
#include "Collision.h"
#include "../math/Vector2.h"
#include "../math/Vector3.h"
#include "Rect.h"
#include "Line3.h"

namespace tglib
{

/*===========================================================================*/
/**
 * 点と矩形の衝突判定．
 *
 * @param [in] point 点．
 * @param [in] rect2 矩形．
 * @return   衝突していればtrue、そうでないならfalse．
 */
bool Collision::pointAndRect( const Vector2& point, const Rect& rect )
{
	if( rect.left   > point.x &&
		rect.right  < point.x &&
		rect.top    > point.y &&
		rect.bottom < point.y   )
	{
		return true;
	}

	return false;
}

/*===========================================================================*/
/**
 * 矩形と矩形の衝突判定．
 *
 * @param [in] rect1 矩形1．
 * @param [in] rect2 矩形2．
 * @return   衝突していればtrue、そうでないならfalse．
 */
bool Collision::rectAndRect( const Rect& rect1, const Rect& rect2 )
{
	if( rect1.left   > rect2.left  &&
		rect1.right  < rect2.right &&
		rect1.top    > rect2.top   &&
		rect1.bottom < rect2.bottom )
	{
		return true;
	}

	return false;
}

/*===========================================================================*/
/**
 * 球と球の衝突判定．
 *
 * @param [in]  center1 球体1の中心点．
 * @param [in]  radius1 球体1の半径．
 * @param [in]  center2 球体2の中心点．
 * @param [in]  radius2 球体2の半径．
 * @return   衝突していればtrue、そうでないならfalse．
 */
bool Collision::sphereAndSphere( const Vector3& center1, float radius1, const Vector3& center2, float radius2 )
{
	return false;
}

/*===========================================================================*/
/**
 * 線分と線分の衝突判定．
 *
 * @param [in]  line1 ライン１．
 * @param [in]  line2 ライン２．
 * @return   衝突していればtrue、そうでないならfalse．
 */
bool Collision::lineAndLine( Line3& line1, Line3& line2 )
{
	Vector3 vec1 = line1.getVector();
	Vector3 vec2 = line2.getVector();

	// 線分の2乗和を求める
	float len1 = vec1.lengthSq();
	float len2 = vec2.lengthSq();

	return false;
}

/*===========================================================================*/
/**
 * 線分と点の衝突判定．
 *
 * @param [in]  line  ライン．
 * @param [in]  point 点の座標．
 * @return   衝突していればtrue、そうでないならfalse．
 */
bool Collision::lineAndPoint( const Line3& line, const Vector3& point )
{
	return false;
}


} // namespace tglib



/*========= End of File =====================================================*/
